package com.lollipop.checkin.service;

import com.lollipop.checkin.dto.CheckInRequest;
import com.lollipop.checkin.dto.CheckInResponse;

/**
 * 签到服务接口
 * 定义签到相关的业务方法
 */
public interface CheckInService {

    /**
     * 用户签到
     *
     * @param request 签到请求
     * @return 签到响应
     */
    CheckInResponse checkIn(CheckInRequest request);

    /**
     * 获取用户签到记录
     *
     * @param userId 用户ID
     * @return 签到记录（日期列表）
     */
    java.util.List<String> getUserCheckInRecords(String userId);

    /**
     * 获取用户连续签到天数
     *
     * @param userId 用户ID
     * @return 连续签到天数
     */
    int getUserContinueCheckInDays(String userId);

    /**
     * 获取用户总签到天数
     *
     * @param userId 用户ID
     * @return 总签到天数
     */
    int getUserTotalCheckInDays(String userId);

    /**
     * 获取活动签到人数
     *
     * @param activityId 活动ID
     * @return 签到人数
     */
    long getActivityCheckInUsersCount(String activityId);

    /**
     * 重置用户签到数据
     * （仅用于测试和特殊情况）
     *
     * @param userId 用户ID
     * @return 是否重置成功
     */
    boolean resetUserCheckInData(String userId);
}